package com.huanletao.tree;

import java.io.Serializable;
import java.util.List;

/**
 * <p>
 * </p>
 * package: org.huanletao.ssm.util
 * description:
 * className: TreeNode
 * author:  踏雪无痕
 * copyright: Copyright (c) 2022/9/10 8:59
 * since: 1.0.0
 */
public interface TreeNodeBuilder<T> {
    /**
     * 获取实体对象的父级ID
     *
     * @param paramEntity 实体对象
     * @return 父级ID（可序列化）
     */
    Serializable getParentId(T paramEntity);

    /**
     * 设置实体对象的子节点树
     *
     * @param childList 子节点列表
     * @param paramEntity 实体对象
     */
    void setTreeChildrenNode(List<T> childList, T paramEntity);

    /**
     * 获取实体对象的ID
     *
     * @param paramEntity 实体对象
     * @return ID（可序列化）
     */
    Serializable getId(T paramEntity);

    /**
     * 获取节点的显示信息
     *
     * @param node 节点
     * @return 节点的显示信息
     */
    default String getNodeDisplayInfo(T node) {
        return String.valueOf(getId(node));
    }
}
